package org.upo.eps.it.phama.bean;

import java.io.Serializable;
import java.util.Objects;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlTransient;
import javax.xml.bind.annotation.XmlType;

@Entity
@Table(name = "far_detalle_ped_cli", catalog = "phama")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "detallePedidoCliente", propOrder = {})
public class DetallePedCli implements Serializable {

    @EmbeddedId
    @AttributeOverrides({
        @AttributeOverride(name = "idDetalle", column = @Column(name = "ID_DETALLE", nullable = false)),
        @AttributeOverride(name = "idPedidoCli", column = @Column(name = "ID_PEDIDO_CLI", nullable = false))})
    private DetallePedCliId id;
    
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "ID_PEDIDO_CLI", nullable = false, insertable = false, updatable = false)
    @XmlTransient
    private PedidoCliente pedidoCliente;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="ID_PRODUCTO", nullable=false)
    private Producto producto;
    
    @Column(name = "CANTIDAD")
    private Integer cantidad;

    //<editor-fold defaultstate="collapsed" desc="constructors">
    public DetallePedCli() {
    }
    
    public DetallePedCli(DetallePedCliId id, PedidoCliente pedidoCliente, Producto producto) {
        this.id = id;
        this.pedidoCliente = pedidoCliente;
        this.producto = producto;
    }
    
    public DetallePedCli(DetallePedCliId id, PedidoCliente pedidoCliente, Producto producto, Integer cantidad) {
        this.id = id;
        this.pedidoCliente = pedidoCliente;
        this.producto = producto;
        this.cantidad = cantidad;
    }
    //</editor-fold>

    //<editor-fold defaultstate="collapsed" desc="getters & setters">
    public DetallePedCliId getId() {
        return this.id;
    }
    
    public void setId(DetallePedCliId id) {
        this.id = id;
    }
    
    public PedidoCliente getPedidoCliente() {
        return this.pedidoCliente;
    }
    
    public void setPedidoCliente(PedidoCliente pedidoCliente) {
        this.pedidoCliente = pedidoCliente;
    }
    
    public Producto getProducto() {
        return this.producto;
    }
    
    public void setProducto(Producto producto) {
        this.producto = producto;
    }
    
    public Integer getCantidad() {
        return this.cantidad;
    }
    
    public void setCantidad(Integer cantidad) {
        this.cantidad = cantidad;
    }

    //</editor-fold>
    
    @Override
    public int hashCode() {
        int hash = 7;
        hash = 71 * hash + Objects.hashCode(this.id);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final DetallePedCli other = (DetallePedCli) obj;
        if (!Objects.equals(this.id, other.id)) {
            return false;
        }
        return true;
    }
    
    
}
